An enterprise class storage array includes multiple data storage pools for storing data, and each storage pool includes multiple disks. Each pool has finite capacity and performance capabilities. An out-of-balance capacity condition occurs when too much data is stored in one pool, and an out-of-balance performance condition occurs when too many read or write input/output operations per second (IOPS) or read or write transfers (Xfers) are made to or from one pool. If a pool is already being overused and a spike in workload occurs involving that pool, then there may be a slow-down or outage. Thus, it is generally desirable to balance, or “tune,” resource usage across storage pools in order to better handle spikes in workload and thereby avoid outages.
Currently, a user interface notifies a user when a pool is out of balance, and the user then employs a manual procedure to migrate data from one pool to another in order to better balance pools across the array. This manual procedure consumes a large amount of time and resources analyzing reports, opening tasks, examining the capacities and performances of all of the pools to identify particular pools to which data could and should be migrated, creating plans to address the out-of-balance conditions, executing the plans, and monitoring the results.